"""
字符串的使用(容器)
"""

# 通过下标获取指定位置的字符
# 从前到后, 下标从 0 开始
# 从后到前, 下标从 -1 开始
name = 'Blue-Yui'
print(name[0], end=' ')
print(name[1], end=' ')
print(name[2], end=' ')
print(name[-1], end=' ')
print(name[-2], end=' ')
print(name[-3], end='\n')
print()

# 字符串的相关操作


# replace(string1, string2) 方法, 将字符串中的全部: string1 替换为 string2（注意不是修改字符串本身, 而是得到了一个新字符串）
string_variable_1 = 'Blue-Yui-Blue-Yui-Yue-Bai'
string_variable_2 = string_variable_1.replace('Yui', 'Yue')
print(f'将字符串 {string_variable_1} 替换为 {string_variable_2}')
print()

# split(string1) 方法, 按照指定的分割符字符串, 将字符串划分为多个字符串, 并存在列表对象中（注意字符串本身不变, 而是得到了一个列表对象）
string_variable_3 = 'Blue-Yui-Blue-Yui-Yue-Bai'
list_variable_1 = string_variable_3.split('-')
print(f'将字符串 {string_variable_3} 分割为列表 {list_variable_1} \n分割后的数据类型为: {type(list_variable_1)}')
print()

# strip() 方法, 去除字符串的前后空格
string_variable_4 = ' Blue Oracle Java C++ C# Mysql Spring  '
string_variable_5 = string_variable_4.strip()
print(f'将字符串 \'{string_variable_4}\' 规整为 \'{string_variable_5}\'')
print()

# strip(string) 方法, 去除字符串的指定字符（去除字符串前后的指定字符, 不按照字符串的顺序去除）
string_variable_6 = '1221 21Blue Blue Oracle Java C++ C# Mysql Spring12 121221'
string_variable_7 = string_variable_6.strip('12')
print(f'将字符串 \'{string_variable_6}\' 规整为 \'{string_variable_7}\'')
print()

# index(char) 方法, 查找某个字符,如果数据存在返回对应的下标, 否则程序报错
name = 'Blue-Yui'
print(f'在 name 中字符 "-" 所在的索引位置为: {name.index("-")}')
print()

# count(char) 方法, 统计某个字符在当前字符串中出现的次数
name = 'Blue-Yui-Blue-Yue'
count = name.count('-')
print(f'在字符串 name 中 \'-\' 字符出现的次数为: {count}')
print()

# len(char) 方法, 统计元组内的元素个数
name = 'Blue-Yui'
length = len(name)
print(f'name 字符串中的字符有 {length} 个')
print()

# 字符串是无法修改的数据容器
# TypeError: 'str' object does not support item assignment
# name[0] = 'Y'（非法操作）

# 遍历字符串
# 使用 while 遍历字符串
name = 'Blue-Yui'
index = 0
while index < len(name):
    print(name[index], end=' ')
    index += 1
print()
print()

# 使用 for 遍历字符串
for char in name:
    print(char, end=' ')
print()
